package com.jml.spring.registry;

import java.util.HashMap;
import java.util.Map;

/**
 * 单例Bean的管理，需要单独搞一个类来负责
 * 1、单例Bean可能会存在线程安全问题
 * 2、单例Bean在依赖注入的时候，可能存在循环依赖，需要单独的类去解决
 */
public class DefaultSingletonBeanRegistry implements SingletonBeanRegistry{
    /**
     * bean的容器
     */
    private Map<String,Object> singletonObjects = new HashMap<>();

    @Override
    public Object getSingleton(String name) {
        //TODO 学完单例模式的知识点之后，需要将此次改造成双重检查锁模式去获取单例的bean
        return this.singletonObjects.get(name);
    }

    @Override
    public void addSingleton(String name, Object bean) {
        //TODO 为了解决循环依赖，其实spring定义了三个缓存，那么这三个缓存中不能同时存在同一个bean
        this.singletonObjects.put(name,bean);
    }
}
